package com.xbongbong.saas.service;

import com.xbongbong.saas.enums.ScoreOperationTypeEnum;

import java.util.List;
/**
 * @author chunyang.qin
 * @Title: 数据评分分值计算
 * @date 2020/12/2
 */
public interface ScoreConditionService {

    /**
     * data内可能出现的数字类型
     */
    static String  INTEGER = "java.lang.Integer";
    static String  DOUBLE = "java.lang.Double";
    static String LONG = "java.lang.Long";
    static String BIG_DECIMAL = "java.math.BigDecimal";


    Double empty(Object dataValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //不为空
    Double noempty(Object dataValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //等于
    Double equal(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //不等于
    Double noequal(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //大于等于
    Double greaterequal(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //大于
    Double greatethan(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //小于等于
    Double lessequal(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //小于
    Double lessthan(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //介于
    Double range(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //包含任意一个
    Double include(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);

    //同时包含
    Double allinclude(Object dataValue, List<Object> compareValue, Double scoreOperationValue, ScoreOperationTypeEnum scoreOperationTypeEnum);
}
